package com.example.filesftp.ftptransfer.util;

public class PathUtils {
    private static final String WINDOWS_SEPARATOR = "\\";
    private static final String UNIX_SEPARATOR = "/";

    /**
     * 转换为远程系统适用的路径格式
     */
    public static String toRemotePath(String path, boolean isWindows) {
        // 统一转换为Unix风格
        String unified = path.replace(WINDOWS_SEPARATOR, UNIX_SEPARATOR);
        
        // Windows特殊处理：保留驱动器字母但统一格式
        if (isWindows && unified.matches("^[A-Za-z]:.*")) {
            unified = "/" + unified.replace(":", ""); // 转换为 /C/path/to/file
        }
        
        // 确保路径以/开头（Linux风格）
        if (!unified.startsWith(UNIX_SEPARATOR)) {
            unified = UNIX_SEPARATOR + unified;
        }
        
        return unified;
    }

    /**
     * 转换为本地系统适用的路径格式
     */
    public static String toLocalPath(String path, boolean isLocalWindows) {
        if (isLocalWindows) {
            // 处理可能的/C/path形式
            String windowsPath = path.replace(UNIX_SEPARATOR, WINDOWS_SEPARATOR)
                     .replaceAll("^/([A-Za-z])/", "$1:\\"); // 转换 /C/path → C:\path
            
            // 处理网络路径
            if (windowsPath.startsWith("\\")) {
                return windowsPath;
            }
            return windowsPath;
        }
        return path;
    }

    /**
     * 获取适合当前系统的路径分隔符
     */
    public static String getSeparator(boolean isWindows) {
        return isWindows ? WINDOWS_SEPARATOR : UNIX_SEPARATOR;
    }

    /**
     * 转换为远程Windows系统适用的路径格式（特别处理驱动器字母）
     */
    public static String toWindowsRemotePath(String path) {
        // 处理F:\path\to\file → /F/path/to/file
        String unified = path.replace("\\", "/")
                .replaceAll("^([A-Za-z]):/", "/$1/");

        // 处理网络路径
        if (path.startsWith("\\\\")) {
            return path.replace("\\", "/");
        }

        return unified;
    }

    /**
     * 检查是否为有效的Windows驱动器路径
     */
    public static boolean isValidWindowsDrivePath(String path) {
        return path.matches("^[A-Za-z]:\\\\.*");
    }
}